﻿using Dao;
using Interface.BO;
using Interface.DAO;
using JMI_Nucleo.JMIProvider;
using OR;
using System.Data.Common;

namespace BO
{
    public class Pessoa : IPessoa
    {
        IPessoaDao<mPessoa> dao;
         
        public Pessoa()
        {
            dao = DaoFactory<PessoaDao>.Create();
        }

        public bool Salvar(mPessoa infoPessoa, char Acao, int Indice, short Empresa)
        {
            bool retorno = false;
            DbTransaction trans;
            try
            {
                EngineBD.Conectar();
                trans = EngineBD.IniciaTransacao();
                if (Acao == 'I')
                    retorno = dao.Inserir(infoPessoa);
                else if (Acao == 'A')
                    retorno = dao.Alterar(infoPessoa, Indice, Empresa);
                EngineBD.FinalizaTransacao(trans, retorno);
            }
            finally
            {
                EngineBD.Desconectar();
            }
            return retorno;
        }
        public bool Excluir(int Indice, short Empresa)
        {
            bool retorno = false;
            DbTransaction trans;
            try
            {
                EngineBD.Conectar();
                trans = EngineBD.IniciaTransacao();
                retorno = dao.Excluir(Indice, Empresa);
                EngineBD.FinalizaTransacao(trans, retorno);
            }
            finally
            {
                EngineBD.Desconectar();
            }
            return retorno;
        }

        public mPessoa GetPessoa(int Indice, short Empresa)
        {
            mPessoa _mPessoa;

            try
            {
                EngineBD.Conectar();
                _mPessoa = dao.GetPessoa(Indice, Empresa);
            }
            finally
            {
                EngineBD.Desconectar();
            }
            return _mPessoa;
        }
    }
}
